/********************************************************************************
 *    Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH    *
 *                                                                              *
 *              This software is distributed under the terms of the             * 
 *              GNU Lesser General Public Licence (LGPL) version 3,             *  
 *                  copied verbatim in the file "LICENSE"                       *
 ********************************************************************************/
#ifndef ETFNEUTRONWALLPOINT_H
#define ETFNEUTRONWALLPOINT_H 1


#include "FairMCPoint.h"

#include "TObject.h"
#include "TVector3.h"

class EtfNeutronWallPoint : public FairMCPoint
{

  public:

    /** Default constructor **/
    EtfNeutronWallPoint();


    /** Constructor with arguments
     *@param trackID  Index of MCTrack
     *@param detID    Detector ID
     *@param pos      Ccoordinates at entrance to active volume [cm]
     *@param mom      Momentum of track at entrance [GeV]
     *@param tof      Time since event start [ns]
     *@param length   Track length since creation [cm]
     *@param eLoss    Energy deposit [GeV]
     **/
    EtfNeutronWallPoint(Int_t trackID, Int_t detID,Int_t id1, Int_t id2,
                            TVector3 posIn,TVector3 pos_out, TVector3 momIn,
                            TVector3 momOut,Double_t time, Double_t length,
                             Double_t eLoss);

    /** Copy constructor **/
    EtfNeutronWallPoint(const EtfNeutronWallPoint& point);
       /** Destructor **/
    virtual ~EtfNeutronWallPoint();
    /** Output to screen **/
  virtual void Print(const Option_t* opt) const;
  /** Accessors **/
  Double_t GetXIn()   const { return fX; }
  Double_t GetYIn()   const { return fY; }
  Double_t GetZIn()   const { return fZ; }
  Double_t GetXOut()  const { return fX_out; }
  Double_t GetYOut()  const { return fY_out; }
  Double_t GetZOut()  const { return fZ_out; }
  Double_t GetPxOut() const { return fPx_out; }
  Double_t GetPyOut() const { return fPy_out; }
  Double_t GetPzOut() const { return fPz_out; }
  Int_t    GetSector() const { return fSector;}
  Int_t    GetPaddleNb() const { return fPaddleNb;}

 protected:

  Double_t fX_out,  fY_out,  fZ_out;
  Double_t fPx_out, fPy_out, fPz_out;
  Int_t fSector;
  Int_t fPaddleNb;


    ClassDef(EtfNeutronWallPoint,1)

};

#endif
